package cn.jbolt.core.annotation;

import cn.jbolt.core.base.JBoltIDGenMode;
import cn.jbolt.core.consts.JBoltConst;
import com.jfinal.plugin.activerecord.DbKit;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * 表绑定注解
 * @ClassName:  TableBind
 * @author: JFinal学院-小木 QQ：909854136
 * @date:   2022年3月22日
 */
@Retention(RUNTIME)
@Target({ TYPE })
public @interface TableBind {
	/**
	 * 数据源
	 *
	 * @return
	 */
	String dataSource() default DbKit.MAIN_CONFIG_NAME;
	/**
	 * 有分表
	 */
	boolean separate() default false;
	/**
	 * 绑定表
	 *
	 * @return
	 */
	String table();

	/**
	 * 主键
	 *
	 * @return
	 */
	String primaryKey() default JBoltConst.DEFAULT_PRIMARY_KEY_NAME;

	/**
	 * 主键生成策略 默认雪花 可以 auto|snowflake|sequence
	 *
	 * @return
	 */
	String idGenMode() default JBoltIDGenMode.SNOWFLAKE;

	/**
	 * 主键生成策略设置为sequence的时候 对应的序列名称
	 *
	 * @return
	 */
	String idSequence() default JBoltConst.JBOLT_ID_SEQUENCE_DEFAULT;
}
